/**
 * @author Gene
 * @age 永远18岁的美少年
 * @Email yangjianyun@58.com
 * @date 2021-12-12 16:10:36
 * @Description 泛型类型别名
 */

type Cart<T> = { list: T[] } | T[];
let c1: Cart<string> = { list: ["1"] };
let c2: Cart<number> = { list: [1, 2, 3] };

// 接口 interface 和 type的区别

//  泛型接口 vs 泛型类型别名
// 接口创建了一个新的名字，它可以在其他任意地方被调用。而类型别名并不创建新的名字，例如报错信息就不会使用别名
// 类型别名不能被 extends和 implements,这时我们应该尽量使用接口代替类型别名
// 当我们需要使用联合类型或者元组类型的时候，类型别名会更合适

// 能用接口实现的,不要用 type

type IObjcet = {
  name: string;
  [key: string]: any;
};
let obj: IObjcet = {
  name: "1",
  age: 1,
};
export {};
